Topics (Summer 2024)
Please read the general course information first.
We list specific aspects that are of interest to one or more members of our research group. By selecting three of these as your desired seminar/project topics, you signal to us which aspects are most interesting to you.
Feel free to propose your own topics, or variants of existing topics, but note that we only offer topics that we believe we can actually supervise adequately.
Distributed Programming Languages and Systems
Many application scenarios require some for of “distributed logic”: collaboration, communication, sharing data, accessing services, synchronization between multiple devices, etc.
However, designing distributed applications is often seen as too hard, thus applications are moved “to the cloud” at the cost of offline-capability, privacy, and performance.
Instead, we investigate programming language based methodologies to answer hard questions systematically. Typical questions include: How can we deal with conflicts that arise from merging changes from multiple peers? How can users relate their local copy of the data to the global state of the system? What features and guarantees do applications actually require?
Choose from these specific proposals, or suggest a topic of your own:
Advanced Functional Programming
Programming language techniques beyond those present in mainstream languages are often useful to solve a wide range of problems in different domains. An important part of programming language design is the study of repeating patterns in the design of programming languages, a succinct and correct description of their behavior, further extension and generalization to make them more powerful, and then again the search for intuitive examples of their use.
Often advanced functional programming takes inspiration from logic and math.
Choose from these specific proposals, or suggest a topic of your own:
Engineering COPL-style language interpreters
Our course, concepts of programming languages (not required for this topic, but certainly helpful), uses interpreters to study how specific foundational language features work.
However, a realistic language implementation requires much more than what we have discussed in our interpreters – not in terms of supported language concepts, but rather in terms of functionality expected of the implementation.
Related Courses at STG
For related topics, also take a look at the general course offers by our research group: Courses at STG
Specifically, in SS 2024 you may be interested in the Seminar on Artificial Intelligence for Coding Assistance